public class Solution91 {
    /**
     * 一条包含字母 A-Z 的消息通过以下方式进行了编码：
     *
     * 'A' -> 1
     * 'B' -> 2
     * ...
     * 'Z' -> 26
     * 给定一个只包含数字的非空字符串，请计算解码方法的总数。
     *
     */
    public int numDecodings(String s) {
        char[] chars = s.toCharArray();
        if (chars.length == 0 || chars[0] == '0') return 0;
        int pre = 1, cur = 1;
        for (int i = 1; i < chars.length; i++) {
            int tmp = cur;
            if (chars[i] == '0'){
                if (chars[i - 1] == '1' || chars[i - 1] == '2') {
                    cur = pre;
                }
                else return 0;
            }else if (chars[i - 1] == '1' || (chars[i - 1] == '2' && chars[i] >= '1' && chars[i] <= '6')){
                cur = cur +pre;
            }
            pre = tmp;
        }
        return cur;
    }
}
